#pragma once
#include <exception>


class CoreException
{
	const String _what;
public:

	inline CoreException(const String& what) throw()
		:  _what(what)
	{}

	inline const String& what() const throw()
	{ return _what; }
};


class InitException : public CoreException
{
public:
	inline InitException(const String& what) throw()
		: CoreException(what)
	{}

};


class ExitException : public CoreException
{
public:
	inline ExitException(const String& what) throw()
		: CoreException(what)
	{}

};


class RuntimeException : public CoreException
{
public:
	inline RuntimeException(const String& what) throw()
		: CoreException(what)
	{}
};